package com.msh.artascope.devcloud.service.service;

import com.msh.artascope.devcloud.client.po.EnvPo;
import com.msh.artascope.devcloud.service.model.page.ModuleBuildRunPageVo;
import com.msh.artascope.devcloud.service.model.page.ModuleListBuildRunPageVo;
import com.msh.artascope.devcloud.service.model.query.ModuleQueryVo;
import com.msh.artascope.devcloud.service.model.vo.ModuleVo;
import com.msh.artascope.devcloud.client.po.ModulePo;
import com.msh.artascope.devcloud.client.qo.ModuleQo;
import com.msh.frame.client.base.TenantBaseService;
import com.msh.frame.client.common.Result;
import java.util.List;

/**
 * @author shihu
 * @mail m-sh@qq.com
 */
public interface ModuleService extends TenantBaseService<ModulePo,ModuleQo> {

  ModuleListBuildRunPageVo moduleListBuildRunPageVo(Long projectId, Long moduleId, Long tenantId);
  /**
   * 获取页面中选中的 项目
   * @param projectId 选中项目id（必须）
   * @param modulePo  选中模块，为空时显示第一个（可选）
   * @return
   */
  ModuleListBuildRunPageVo moduleListBuildRunPageVo(Long projectId, ModulePo modulePo);

  ModuleBuildRunPageVo moduleBuildRunPageVo(Long moduleId, Long tenantId);

  long insert(ModulePo param, EnvPo envPo);

  long insertVo(ModulePo param);

  void flushSearch(Long tenantId);

// ----------前端vo处理-------------------------------------------------------
  /**
   * id查询
   * @param id 主键id
   * @return  查询Vo列表
   */
  ModuleVo getVo(Long id, Long tenantId);

  /**
   * 查询
   * @param q 查询QueryVo
   * @return  查询Vo列表
   */
  List<ModuleVo> listVo(ModuleQueryVo q);

  /**
   * 分页查询
   * @param q 查询QueryVo
   * @return  分页查询Po列表
   */
  Result<List<ModuleVo>> pageVo(ModuleQueryVo q);


}
